export default {
	config: {
		baseURL: 'http://192.168.0.217:8080',
		// 请求拦截器
		beforeRequest(options = {}) {
			const noToken = [
				'/api/SFPatientInfo/GetLogin'
			];
			let userToken = uni.getStorageSync('token')
			if (!(noToken.indexOf(options.url) >= 0)) {
				// token有效，不需要操作
				// 获取用户 token
				
				if (!userToken) {
					uni.reLaunch({
						url: '/pages/login/index',
					});
					return false;
				}
			}
			return new Promise((resolve, reject) => {
				options.url = this.baseURL + options.url;
				options.method = options.method;
				options.data = options.data;
				// 封装自己的请求头
				options.header = {
					Authorization: userToken
				}
				resolve(options)
			})
		},
		// 响应拦截器
		handleResponse(res) {
			return new Promise((resolve, reject) => {
				// // 处理错误
				if (res.statusCode !== 200) {
					let msg = '登录失效，请重新登录';
					uni.showToast({
						icon: 'none',
						title: res.data.Message
					})
					// uni.reLaunch({
					// 	url: '/pages/login/index',
					// });
					return reject(res.data.Message);
				}
				if (res.statusCode == 200) {
					return resolve(res.data)
				}
			})
		},
	},
	// request 请求
	// 下面最主要的一段代码，利用了promise的特性，当调用request方法时，先经过
	// 请求拦截可以拿到请求参数，在请求之前做处理，请求函数会把处理之后的参数作为结果抛出
	// 给了uni.request进行请求，uni.request执行完再次return了promise，接着执行响应
	// 拦截.then中的 response函数，response函数接收到uni请求响应的结果作为res传递给
	// 响应拦截（这里为什么能拿到uni的响应结果因为uni返回的也是promise），在response
	// 就可以对响应的数据处理后再进行promise的返回
	request(options = {}) {
		return this.config.beforeRequest(options).then(opt => {
			return uni.request(opt)
		}).then(res => this.config.handleResponse(res))
	}
}

// // BASE_URL只是请求url的前半部分
// let BASE_URL = 'http://192.168.0.217:8080'

// // token默认过期时间
// let expiredTime = +new Date() + 1800 * 1000

// // 不需要登录的接口
// const noToken = [
// 	'/api/SFPatientInfo/GetLogin'
// ];

// const request = function(options = {}) {
// 	// 判断是否需要登录
// 	if (!(noToken.indexOf(options.url) >= 0)) {
// 		// 如果不需要登录
// 		// 判断token是否过期，过期强制登出，不过期，正常走下一步
// 		var expiredTimes = uni.getStorageSync('expiresIn') || expiredTime;
// 		var now = +new Date()
// 		if (expiredTimes - now < 0) {
// 			// token失效，重新获取
// 			uni.reLaunch({
// 				url: '/pages/login/index',
// 			});
// 		} else {
// 			// token有效，不需要操作
// 			// 获取用户 token
// 			let userToken = uni.getStorageSync('token')
// 			if (!userToken) {
// 				uni.reLaunch({
// 					url: '/pages/login/index',
// 				});
// 				return false;
// 			} else {
// 				// 将 token 放入请求头中
// 				options.headers = {
// 					'Authorization': userToken,
// 				};
// 			}
// 		}
// 	}
// 	// 请求头信息
// 	// options.headers = {
// 	// 	'content-type': 'application/json;charset=utf-8',
// 	// };

// 	// 如果调用接口不明确不显示 loading
// 	if (!options.hideLoading) {
// 		uni.showLoading({
// 			title: '加载中'
// 		});
// 	}
// 	return uni.request({
// 		url: BASE_URL + options.url,
// 		data: options.data,
// 		header: options.headers,
// 		method: options.method,
// 		success: (res) => {
// 			return new Promise((resolve,reject)=>{
// 				console.log(res, 'response')
// 				if (!options.hideLoading) {
// 					uni.hideLoading();
// 				}
// 				// console.log(response.data)
// 				// const result = response.data
// 				if (res.statusCode !== 200) {
// 					let msg = res.data.msg || '请求错误';
// 					uni.showToast({
// 						icon: 'none',
// 						title: msg
// 					})
// 					reject(msg);
// 				}
// 				if (res.statusCode == 200) {
// 					resolve(res.data)
// 				}
// 			})
// 			// if (result.code == 500) {
// 			// 	uni.showToast({
// 			// 		icon: 'none',
// 			// 		title: result.message,
// 			// 		duration: 1500
// 			// 	})
// 			// } else {
// 			// 	options.success(result)
// 			// }
// 		},
// 		// complete: () => {
// 		// 	console.log(BASE_URL + options.url);
// 		// 	uni.hideLoading();
// 		// },
// 		// fail: (error) => {
// 		// 	console.log(error, 'error')
// 		// 	uni.hideLoading();
// 		// 	if (error && error.response) {
// 		// 		showError = error => {
// 		// 			let errorMsg = ''
// 		// 			switch (error.status) {
// 		// 				case 400:
// 		// 					errorMsg = '请求参数错误'
// 		// 					break
// 		// 				case 401:
// 		// 					errorMsg = '未授权，请登录'
// 		// 					break
// 		// 				case 403:
// 		// 					errorMsg = '跨域拒绝访问'
// 		// 					break
// 		// 				case 404:
// 		// 					errorMsg = `请求地址出错: ${error.config.url}`
// 		// 					break
// 		// 				case 408:
// 		// 					errorMsg = '请求超时'
// 		// 					break
// 		// 				case 500:
// 		// 					errorMsg = '服务器内部错误'
// 		// 					break
// 		// 				case 501:
// 		// 					errorMsg = '服务未实现'
// 		// 					break
// 		// 				case 502:
// 		// 					errorMsg = '网关错误'
// 		// 					break
// 		// 				case 503:
// 		// 					errorMsg = '服务不可用'
// 		// 					break
// 		// 				case 504:
// 		// 					errorMsg = '网关超时'
// 		// 					break
// 		// 				case 505:
// 		// 					errorMsg = 'HTTP版本不受支持'
// 		// 					break
// 		// 				default:
// 		// 					errorMsg = error.msg
// 		// 					break
// 		// 			}

// 		// 			uni.showToast({
// 		// 				title: errorMsg,
// 		// 				icon: 'none',
// 		// 				duration: 1000,
// 		// 				complete: function() {
// 		// 					setTimeout(function() {
// 		// 						uni.hideToast();
// 		// 					}, 1000);
// 		// 				}
// 		// 			});
// 		// 		}
// 		// 		showError(error.response);
// 		// 	}
// 		// },
// 		timeout: 30000
// 	})
// }

// export default request;